﻿using System;

namespace CalculatorApplication
{
    class NumberManipulator
    {
        public void Swap(ref int x, ref int y)
        {
            int temp;

            temp = x; /* 保存 x 的值 */
            x = y; /* 把 y 赋值给 x */
            y = temp; /* 把 temp 赋值给 y */
        }

        static void Main(string[] args)
        {
            NumberManipulator n = new NumberManipulator();
            /* 局部变量定义 */
            int a = 100;
            int b = 200;

            Console.WriteLine("在交换之前，a 的值：{0}", a);
            Console.WriteLine("在交换之前，b 的值：{0}", b);

            /* 调用函数来交换值 */
            n.Swap(ref a, ref b);

            Console.WriteLine("在交换之后，a 的值：{0}", a);
            Console.WriteLine("在交换之后，b 的值：{0}", b);

            Console.ReadLine();
        }
    }
}
/*
 
引用参数是一个对变量的内存位置的引用。当按引用传递参数时，与值参数不同的是，它不会为这些参数创建一个新的存储位置。引用参数表示与提供给方法的实际参数具有相同的内存位置。

在 C# 中，使用 ref 关键字声明引用参数。 

 */